<?php
session_start();
$sid=session_id();
include 'lib/phpqrcode.php';
$value = 'http://10.102.117.18/study3/pad/padlogin.php?sid='.$sid; //二维码内容,padlogin.php?sid=xxxxxxxx，向padlogin.php提交sid号
$errorCorrectionLevel = 'L';//容错级别
$matrixPointSize = 6;//生成图片大小
//生成二维码图片
QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);
$logo = '../img/index.png';//准备好的logo图片
$QR = 'qrcode.png';//已经生成的原始二维码图

if ($logo !== false) {
    $QR = imagecreatefromstring(file_get_contents($QR));
    $logo = imagecreatefromstring(file_get_contents($logo));
    $QR_width = imagesx($QR);//二维码图片宽度
    $QR_height = imagesy($QR);//二维码图片高度
    $logo_width = imagesx($logo);//logo图片宽度
    $logo_height = imagesy($logo);//logo图片高度
    $logo_qr_width = $QR_width / 5;
    $scale = $logo_width/$logo_qr_width;
    $logo_qr_height = $logo_height/$scale;
    $from_width = ($QR_width - $logo_qr_width) / 2;
    //重新组合图片并调整大小
    imagecopyresampled(
        $QR,
        $logo,
        $from_width,
        $from_width,
        0,
        0,
        $logo_qr_width,
        $logo_qr_height,
        $logo_width,
        $logo_height
    );
}
//输出图片
imagepng($QR, 'helloweixin.png');
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>扫码登录</title>
</head>

<body>
    <img  src="helloweixin.png" alt="二维码"><br>
    <h5 >登录不便，请手机扫码操作</h5>
    <div></div>
    <script>
        var xhttp;
        if (window.XMLHttpRequest) {
          // 用于现代浏览器的代码
            xhttp = new XMLHttpRequest();
        } else {
           // 应对老版本 IE 浏览器的代码
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        };
        
        var div = document.querySelector('div');
        var timer = 60;
        var flag=0;       //此变量表示数据库中是否存在sid号的帐号
        function jz(){    //60秒内如果检测到数据库中有sid跳转到登录后的页面，否则跳转到登录页面
            if(flag==1){
                location.href = '../index.php'
            }
            else if (timer == 0) {
                location.href = '../login.php'
            } else {
                div.innerHTML = '你将在' + timer + '秒钟之后跳转到登录首页！';
                timer--;
                // 什么是readyState
                // readyState是XMLHttpRequest对象的一个属性，用来标识当前XMLHttpRequest对象处于什么状态。
                // readyState总共有5个状态值，分别为0~4，每个值代表了不同的含义
                // 0 未初始化状态：此时，已经创建了一个XMLHttpRequest对象
                // 1 准备发送状态：此时，已经调用了XMLHttpRequest对象的open方法，并且XMLHttpRequest对象已经准备好将一个请求发送到服务器端
                // 2 已经发送状态：此时，已经通过send方法把一个请求发送到服务器端，但是还没有收到一个响应
                // 3 正在接收状态：此时，已经接收到HTTP响应头部信息，但是消息体部分还没有完全接收到
                // 4 完成响应状态：此时，已经完成了HTTP响应的接收
                // 什么是status
                // status是XMLHttpRequest对象的一个属性，表示响应的HTTP状态码。
                // 在HTTP1.1协议下，HTTP状态码总共可分为5大类，如下表所示：
                // 1XX 服务器收到请求，需要继续处理。例如101状态码，表示服务器将通知客户端使用更高版本的HTTP协议。
                // 2XX 请求成功。例如200状态码，表示请求所希望的响应头或数据体将随此响应返回。
                // 3XX 重定向。例如302状态码，表示临时重定向，请求将包含一个新的URL地址，客户端将对新的地址进行GET请求。
                // 4XX 客户端错误。例如404状态码，表示客户端请求的资源不存在。
                // 5XX 服务器错误。例如500状态码，表示服务器遇到了一个未曾预料的情况，导致了它无法完成响应，一般来说，这个问题会在程序代码出错时出现。
                xhttp.onreadystatechange = function() {
                   if (this.readyState == 4 && this.status == 200) {
                      flag = this.responseText;
                   }
                };
                //Ajax的open（）方法有3个参数：1、method；2、url；3、boolean；
                // 参数1有get和post两个取值
                // 参数2表示什么就不用说了
                // 重点说下第3个参数：boolean的取值
                // 当该boolean值为true时，服务器请求是异步进行的，也就是脚本执行send（）方法后不等待
                // 服务器的执行结果，而是继续执行脚本代码；
                // 当该boolean值为false时，服务器请求是同步进行的，也就是脚本执行send（）方法后等待
                // 服务器的执行结果的返回，若在等待过程中超时，则不再等待，继续执行后面的脚本代码！
                xhttp.open("GET", "sid.php", true);
                xhttp.send(); 
            }
        }
        setInterval(jz, 1000);
    </script>
</body>

</html>